package com.jiang.daily.Q2712;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/03/27 17:44
 */
public class Solution {
    public long minimumCost(String s) {
        char[] arr = s.toCharArray();

        int len = s.length();
        int start = len / 2;
        char v = arr[start]; // 中间位置的   字符
        int l = start - 1, r = start + 1; // 向两边扩展的指针

        long res = 0;
        boolean flag = true; // true表示没反转，false表示反转
        while (l >= 0)  {
            // 如果没反转，并且当前字符和中间字符不同或者反转了，并且当前字符和中间字符相同，那么就需要反转
            if (flag && arr[l] != v || !flag && arr[l] == v)  {
                flag = !flag;
                res += l + 1; // 成本
            }
            l--;
        }

        flag = true;
        while (r < len) {
            // 如果没反转，并且当前字符和中间字符不同或者反转了，并且当前字符和中间字符相同，那么就需要反转
            if (flag && arr[r] != v || !flag && arr[r] == v) {
                flag = !flag;
                res += len - r; // 成本
            }
            r++;
        }
        return res;
    }

//    public long minimumCost(String S) {
//        char[] s = S.toCharArray();
//        int n = s.length;
//        long ans = 0;
//        for (int i = 1; i < n; i++) {
//            if (s[i - 1] != s[i]) {
//                ans += Math.min(i, n - i);
//            }
//        }
//        return ans;
//    }
}
